# 信号量: 指定同时允许几个线运行
import threading, time
def run(n):
    semaphore.acquire()  # 信号锁,最多只能有5个线程同时运行,如果不加,则是所有程序一起执行
    time.sleep(1)
    print("run the thread: %s\n" %n)
    semaphore.release()

if __name__ == '__main__':
    num = 0
    # 最多允许5个线程同时运行
    semaphore = threading.BoundedSemaphore(5)
    for i in range(20):
        t = threading.Thread(target=run, args=(i,))
        t.start()
while threading.active_count() != 1:  # 正在运行线程数,包含主线程
    print(threading.active_count())
    pass
else:
    print('----all threads done---')
    print(num)
